<?php

namespace Mogod\Core\DependencyInjection\ServiceLocator;

/**
 *
 * Реализация паттерна Service Locator
 *
 * @author goorus, morph
 * @package Mogod\Core
 *
 */
class ServiceLocator
{

	/**
	 * Работающий сервис локатор
	 *
	 * @var ServiceLocatorAbstract
	 */
	protected $worker;

	/**
	 * Возвращет сервис по контексту
	 *
	 * @param string $class
	 * @param mixed $context
	 * @return mixed Сервис
	 */
	public function get($class, $context)
	{
		return $this->worker->get($class, $context);
	}

	/**
	 * Возвращает текущий обработчик
	 *
	 * @return ServiceLocatorAbstract
	 */
	public function getWorker()
	{
		return $this->worker;
	}

	/**
	 * Устанавливает сервис для контекста
	 *
	 * @param string $class Класс
	 * @param mixed $context Контекст
	 * @param mixed $instance Сервис
	 * @return $this Этот объект
	 */
	public function set($class, $context, $instance)
	{
		$this->worker->set($class, $context, $instance);
		return $this;
	}

	/**
	 * Устанавливает текущий обработчик
	 *
	 * @param ServiceLocatorAbstract $worker
	 */
	public function setWorker($worker)
	{
		$this->worker = $worker;
	}

}